function A315()
    format long;
    % 单排钢筋
    % 读取 Excel 文件中的数据（假设数据存储在 A1:A512）
    data = readtable('A3_data_single.xlsx');  % 读取整个 Excel 文件
    % 获取第150列数据
    x = data{:, 150};  % 将第150列的数据提取为序列 x

    %双排钢筋
    data_1 = readtable('A3_data_double.xlsx');  % 读取整个 Excel 文件
    % 获取第150列数据
    x_1 = data_1{:, 150};  % 将第150列的数据提取为序列 

    % 设置采样频率和时间向量
    fs = 1e4;                  % 采样频率 10 kHz
    t = (0:length(x)-1)/fs;    % 时间向量，确保与读取的数据长度匹配

    % 进行 Hilbert 变换
    % 单排钢筋Hilbert变换
    y = hilbert(x);
    subplot(3, 3, 2)
    plot(t, real(y), t, imag(y))
    xlim([0.01 0.16])  % 限定时间范围
    legend('单排实部', '单排虚部')
    title('单排钢筋Hilbert函数')

    % 双排钢筋Hilbert变换
    y_1 = hilbert(x_1);
    subplot(3, 3, 3)
    plot(t, real(y_1), t, imag(y_1))
    xlim([0.01 0.16])  % 限定时间范围
    legend('双排实部', '双排虚部')
    title('双排钢筋Hilbert函数')

    % 计算单双排钢筋实部与虚部差值
    real_diff = real(y) - real(y_1);  % 实部差值
    imag_diff = imag(y) - imag(y_1);  % 虚部差值

    % 在第4个子图中绘制实部和虚部的差值
    subplot(3, 3, 4)
    % 绘制实部差值
    plot(t, real_diff, 'b', 'DisplayName', '实部差值')  % 使用蓝色显示实部差值
    hold on
    % 绘制虚部差值
    plot(t, imag_diff, 'r', 'DisplayName', '虚部差值')  % 使用红色显示虚部差值
    hold off
    xlim([0.01 0.16])  % 限定时间范围
    legend('show')  % 显示图例
    title('单排与双排钢筋Hilbert函数实部与虚部差值')

    subplot(3, 3, 5)
    % 计算单排钢筋原始信号 x 的功率谱密度
    pwelch(x, 256, 0, [], fs, 'centered')  % 原始信号的功率谱
    % 保持当前图形
    hold on
    % 计算分析信号 y 的功率谱密度
    pwelch(y, 256, 0, [], fs, 'centered');  % 绘制Hilbert信号的功率谱
    % 获取图形中的所有线句柄
    h = findobj(gca, 'Type', 'Line');  % 获取当前图形中所有的线条对象
    % 修改第二条线（Hilbert曲线）的颜色为红色
    if length(h) >= 2
        set(h(2), 'Color', 'r');  % 只修改颜色，保持线宽一致
    end
    % 设置图例，原始信号和Hilbert信号
    legend('原信号', 'Hilbert', 'Location', 'best')
    % 添加标题
    title('单排钢筋原始信号与Hilbert分析信号的功率谱密度')

    subplot(3, 3, 6)
    % 计算双排钢筋原始信号 x_1 的功率谱密度
    pwelch(x_1, 256, 0, [], fs, 'centered')  % 原始信号的功率谱
    % 保持当前图形
    hold on
    % 计算分析信号 y_1 的功率谱密度
    pwelch(y_1, 256, 0, [], fs, 'centered');  % 绘制Hilbert信号的功率谱
    % 获取图形中的所有线句柄
    h_1 = findobj(gca, 'Type', 'Line');  % 获取当前图形中所有的线条对象
    % 修改第二条线（Hilbert曲线）的颜色为红色
    if length(h_1) >= 2
        set(h_1(2), 'Color', 'r');  % 只修改颜色，保持线宽一致
    end
    % 设置图例，原始信号和Hilbert信号
    legend('原信号', 'Hilbert', 'Location', 'best')
    % 添加标题
    title('双排钢筋原始信号与Hilbert分析信号的功率谱密度')


    % 单双排钢筋原始信号
    subplot(3, 3, 1)
    plot(t, x, 'b', 'DisplayName', '单排钢筋')    % 绘制 x（单排钢筋信号），使用蓝色
    hold on
    plot(t, x_1, 'r', 'DisplayName', '双排钢筋')  % 绘制 x_1（双排钢筋信号），使用红色
    hold off
    title('单排和双排钢筋信号比较')
    legend('show')  % 显示图例

    % 计算信号的 IMF。使用“显示”名称-值对输出一个表格，显示每个 IMF 的筛选迭代次数、相对公差和筛选停止标准。
    imf = emd(x, 'Display', 1);
    % 使用计算出的IMF绘制Hilbert谱。将频率范围限制在0 Hz到70 Hz之间。
    subplot(3, 3, 7)
    hht(imf, fs, 'FrequencyLimits', [0 70])
    title('单排钢筋Hilbert谱')  % 添加标题

    % 计算信号的 IMF。使用“显示”名称-值对输出一个表格，显示每个 IMF 的筛选迭代次数、相对公差和筛选停止标准。
    imf_1 = emd(x_1, 'Display', 1);
    % 使用计算出的IMF绘制Hilbert谱。将频率范围限制在0 Hz到70 Hz之间。
    subplot(3, 3, 8)
    hht(imf_1, fs, 'FrequencyLimits', [0 70])
    title('双排钢筋Hilbert谱')  % 添加标题

    % 计算信号差值
    x_diff =imf-imf_1 ;  % 计算单排与双排钢筋信号的差值
    % 使用计算出的IMF绘制Hilbert谱。将频率范围限制在0 Hz到70 Hz之间。
    subplot(3, 3, 9)
    hht(x_diff , fs, 'FrequencyLimits', [0 70])
    title('单排与双排钢筋差值Hilbert谱')  % 添加标题
    
    % 使用经验模态分解（EMD）分析信号 x
    emd(x)                       % 使用emd可视化固有模式函数（IMF）和残差。
    title('单排钢筋经验模态分解')  % 添加标题
    emd(x_1)
    title('双排钢筋经验模态分解')  % 为双排钢筋设置标题
end
